One or more hosts may store large quantities of data in a group of storage units, which is typically controlled by a storage controller, also referred to herein as a storage control unit. Examples of such a storage controllers include the IBM TotalStorage® Enterprise Storage Server® (ESS) and the IBM System Storage DS8000 series. A storage controller such as the ESS or DS8000 may provide a number of functions accessible by the hosts for protecting data, backing the data up, and making the data available for use.
Before a host accesses data through a storage controller or other storage system, a request may be made to block other operations from accessing that data. For example, a write operation may request that other operations be blocked from accessing specified data such as one or more rows in a data table, one or more tracks of a hard disk drive, or the like. If one operation is granted the block, referred to herein as a data unit block, the first operation may access the specified data without a second operation being allowed access to the specified data. The first operation has exclusive access to the specified data until the first operation releases the data unit block. For transactions such as airline reservations, credit card transactions, or similar transactions, a data unit block function is designed to allow a transaction to be completed before a second operation can access the transaction data.
Amongst the functions which may be provided by a storage controller is a data preservation function which can preserve an identified set of data at a particular point in time. For example, the ESS and DS8000 series storage controllers support a data preservation function referred to as “FlashCopy®” which enables a point-in-time snap copy to be made of a set of tracks in a source volume. One feature of such data preservation functions is that the data of the copy is frequently made immediately available for read or write access. The identified data may be for example, a set of tracks which can consist of an entire volume, a data set, or just a selected set of tracks, for example.
In one mode of a data preservation function, a copy of all of the data to be preserved at the particular point in time, is made by copying the identified data from the source volume to the target volume, typically in a background copy mode. If a host attempts to update the data on the source volume which is being preserved, that update is typically temporarily delayed until the old data to be updated is copied to a target volume for preservation. Once a particular data location of the set of identified data on the source volume has been successfully copied to the target volume by the background copy operation, that data location on the source volume is freed for subsequent immediate updating by a host.
Before a particular task such as a command is permitted to proceed affecting a particular storage unit such as a storage volume of a storage subsystem, a request may be made to block other tasks of a similar nature from accessing that storage unit while the first task is being executed. For example, an establish command such as a FlashCopy® establish command, may seek to establish a point-in-time snap copy relationship between storage locations in a source volume and storage locations in a target volume. Accordingly, a request is made for a FlashCopy® task lock to block other FlashCopy® establish operations from accessing the source volume while the source volume portion of the first FlashCopy® establish command is executed.
Thus, if one task such as the FlashCopy® establish task is granted the FlashCopy® task lock for a particular source volume, that FlashCopy® establish task may access the specified source volume without a second FlashCopy® establish Task being allowed to access the specified source volume for purposes of establishing another FlashCopy® relationship. The first FlashCopy® establish task has exclusive access to the specified volume until the first FlashCopy® establish task releases the FlashCopy® task lock for that volume. Once the source volume portion of the FlashCopy® establish task is completed, the FlashCopy® task lock for the source volume may be released and a request may be made for a FlashCopy® task lock to block other FlashCopy® establish operations from accessing the target volume while the target volume portion of the FlashCopy® establish command is executed. Once the target volume portion of the FlashCopy® establish task is completed, the FlashCopy® task lock for the target volume may be released.